Base de datos en Azure y EFCore

Descripción

Crear una base de datos en Azure y configurar EF Core para utilizarla

Método

Primero tenemos que desplegar una base de datos SQL en Azure, desde el portal de Azure buscamos SQL, y seleccionamos SQL Databases:

Seleccionamos Create:

En la configuración básica seleccionamos una suscripción y un resorce group (en caso de que no tengamos ninguno lo podemos crear):

Indicamos el nombre que le queremos dar a la base de datos y seleccionamos el servidor en el que se creará la base de datos:

Si no tenemos ningún servidor creado de base de datos tendremos que crearlo, hacemos click en Create new y en la siguiente pantalla indicamos un nombre para el servidor (tiene que ser un identificador único), y un usuario y una contraseña:

Al volver a la pantalla de configuración básica nos aseguramos de que está seleccionado el servidor que acabamos de crear y en Workload Environment seleccionamos Development, el precio final debería de ser bastante reducido:

Las demas opciones las dejamos por defecto y pulsamos en Review+Create:

En la pantalla de resumen revisamos que todo esté ok, sobre todo el precio, y le damos a Create.

A mi me sale en unos 4 Euros al mes al ser una base de datos de desarrollo, si elijes una de producción se va a los 190, asi que para hacer pruebas de de desarrollo nos vale:

La base de datos tarda un rato en crearse:

Dar acceso publico a la base de datos

Si queremos acceder a la base de datos desde fuera de Azure tenemos que configurar el servidor para que permita el acceso público. En la barra de busqueda buscamos SQL Servers:

Seleccionamos nuestro servidor:

Nos vamos a Networking dentro de Security:

En la pestaña de Public access seleccionamos Selected networks:

Y a continuación indicamos que queremos añadir nuestra IP en el firewall:

Despues solo hacemos click en Save.

NOTA: si obtenemos un error al guardar a veces simplemente tenemos que hacer los dos pasos por separado, primero seleccionar Selected networks darle a save y despues añadir nuestra IP en el firewall y darle a save.

En este momento la base de datos ya está creada y lista para ser accedida desde fuera de Azure.

Configuración de EF Core con la base de datos de Azure

En el portal de Azure nos vamos a nuestra base de datos:

(No confundir con el servidor, podemos acceder a nuestras bases de datos buscando SQL databases en la barra de busqueda)

Y entramos en la sección de connection string:

Seleccionamos el connection string que aparece y cambiamos el parámetro de Password por la contraseña del usuario de nuestra base de datos:

Ponemos el ConnectionString en la configuración del DBContext de nuestra aplicación, el string podemos dividirlo en varias lineas para que sea mas facil la lectura:

string connection = "Server = tcp:efcoreexample.database.windows.net,1433;" +
    "Initial Catalog = EFCoreExample;" +
    "Persist Security Info = False;" +
    "User ID = EFCore;" +
    "Password = abc123.,;" +
    "MultipleActiveResultSets = False;" +
    "Encrypt = True;" +
    "TrustServerCertificate = False;" +
    "Connection Timeout = 30;";

Y listo, en este momento nuestra aplicación ya estará funcionando con la base de datos de Azure.

Hay que tener en cuenta de que en este ejemplo en concreto tenemos que cargar los datos en la base de datos antes de nada, si no obtendremos una excepción como la siguiente indicando que no existen las tablas:

Para cargar la información simplemente nos conectamos con SQL Server Management Studio(SSMS) o con DBeaver y cargamos nuestro script SQL.

Tags

Azure | EF Core